#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QUdpSocket>
#include <QLabel>
#include <QHostInfo>

QT_BEGIN_NAMESPACE
namespace Ui
{
    class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget* parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow* ui;

private:
    QUdpSocket* udpSocket = nullptr; // 用于 UDP 通信的 socket

private:
    QLabel* labSocketState; // 状态栏上的标签
private:
    /**
     * @brief 获取本机 IPv4 地址
     * @return 本机 IPv4 地址 点分十进制字符串
     */
    QString getLocalIPv4(void);

    /**
     * @brief socket 状态变化时
     * @param socketState socket 状态
     */
    void do_socketStateChanged(QAbstractSocket::SocketState socketState);

    /**
     * @brief 读取缓冲区的行文本
     */
    void do_socketReadyRead(void);
};
#endif // MAINWINDOW_H
